package edu.ccut.saturn.basecomponent.database.impl.sqlserver.builder.unused;

import java.sql.Connection;

import edu.ccut.saturn.basecomponent.database.ISaturnSQL;
import edu.ccut.saturn.basecomponent.database.SaturnSQLBuilderFactory;
import edu.ccut.saturn.basecomponent.database.impl.AbstractInsertSQLBuilder;
import edu.ccut.saturn.component.IDataItem;
import edu.ccut.saturn.component.SaturnComponentException;
import edu.ccut.saturn.component.SaturnData;
/**
 * 不考虑大数据
 * @author zjh
 *
 */

public class SqlServerInsertSQLBuilder extends AbstractInsertSQLBuilder {
	
	/**
	 * 获得数据库类型
	 * @author zjh
	 * @return sqlserver
	 */
	@Override
	protected String getDatabaseType() {
		return SaturnSQLBuilderFactory.SQLSERVER;
	}
	/**
	 * 生成sqlserver插入语句values()内部的语句.
	 * @author zjh
	 * @param iDataItem 数据项对象
	 * @param value 数据值
	 * @return 生成好的字符串,后多个"," 父类处理
	 */	
	@Override
	public String getColumnValueString(IDataItem iDataItem, Object value) {
		return "'"+value+ "',";
	}
	/**
	 * 得到操作类型
	 * @author zjh
	 * @return INSERT_SQLSERVER 
	 */
	@Override
	protected String getOperationType() {
		return ISaturnSQL.INSERT_SQLSERVER;
	}
	/**
	 * 得到当前主键值的sql语句
	 * @author zjh
	 * @return sql语句
	 */	
	@Override
	protected String getPrimerKeySql(IDataItem dataItem) {
		return "SELECT @@IDENTITY";
	}
	/**
	 * 重写设置主键值方法,sqlserver无法在此设置主键值
	 * @author zjh
	 * @param saturnData
	 * @param conn 
	 */
	@Override
	protected void setPrimerKey(SaturnData saturnData, Connection conn)
			throws SaturnComponentException {
		
	}
	/**
	 * 重写判断主键方法,sqlserver如果有主键则不写入insert语句中
	 * @author zjh
	 *
	 */
	
	protected boolean isPrimaryKey(IDataItem dataItem,Object value) {
		if(TRUE.equalsIgnoreCase(dataItem.getIsPrimaryKey())){
			return super.isZero(value);
		}
		return false;
	}
	/**
	 * 重写判断判断值是否为0方法,sqlserver中允许输入的数字键为0,因为其有含义
	 * @author zjh
	 *
	 */
	@Override
	protected boolean isZero(Object value) {
		return false;
	}
}
